//    Openbravo POS is a point of sales application designed for touch screens.
//    Copyright (S) 2007-2009 Openbravo, S.L.
//    http://www.openbravo.com/product/pos
//
//    This file is part of Openbravo POS.
//
//    Openbravo POS is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.
//
//    Openbravo POS is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with Openbravo POS.  If not, see <http://www.gnu.org/licenses/>.
package com.gitee.wsl.db.dsl.query

/**
 * @author adrian,wushunlian
 */
enum class QBFCompareEnum(
    /*public int getCompareInt() {
              return m_iValue;
          }*/
    //public abstract String getExpression(String sField, String sSQLValue);
    /*@Override
        public boolean equals(Object obj) {
            if (obj == null)
                return false;
            if (obj instanceof QBFCompareEnum) {
                QBFCompareEnum temp = (QBFCompareEnum) obj;
                return this.m_iValue == temp.m_iValue;
            }
            return false;
        }*/
    val value: Int, val m_sKey: String
) {
    COMP_NONE(0, "qbf.none"),
    COMP_ISNULL(1, "qbf.null"),
    COMP_ISNOTNULL(2, "qbf.notnull"),
    COMP_RE(3, "qbf.re"),
    COMP_EQUALS(4, "qbf.equals"),
    COMP_DISTINCT(5, "qbf.distinct"),
    COMP_GREATER(6, "qbf.greater"),
    COMP_LESS(7, "qbf.less"),
    COMP_GREATEROREQUALS(8, "qbf.greaterequals"),
    COMP_LESSOREQUALS(9, "qbf.lessequals"),
    COMP_STARTSWITH(10, "qbf.startswith"),
    COMP_IN(14, "qbf.in"),
    COMP_ALL(15, "qbf.all") /*public final static QBFCompareEnum COMP_NONE = new QBFCompareEnum(0, "qbf.none") {
        public String getExpression(String sField, String sSQLValue) {
            return null;
        }
    };
    public final static QBFCompareEnum COMP_ISNULL = new QBFCompareEnum(1, "qbf.null") {
        public String getExpression(String sField, String sSQLValue) {
            return sField + " IS NULL";
        }
    };
    public final static QBFCompareEnum COMP_ISNOTNULL = new QBFCompareEnum(2, "qbf.notnull") {
        public String getExpression(String sField, String sSQLValue) {
            return sField + " IS NOT NULL";
        }
    };
    public final static QBFCompareEnum COMP_RE = new QBFCompareEnum(3, "qbf.re") {
        public String getExpression(String sField, String sSQLValue) {
            sSQLValue.replace("％", "%");
            if (sSQLValue.startsWith("'"))
                if (sSQLValue.endsWith("'"))
                    sSQLValue = sSQLValue.substring(1, sSQLValue.length() - 1);
                else
                    sSQLValue = sSQLValue.substring(1);
            if (!sSQLValue.startsWith("%"))
                sSQLValue = "%" + sSQLValue;
            if (!sSQLValue.endsWith("%"))
                sSQLValue += "%";
            return sField + " LIKE '" + sSQLValue + "'";
        }
    };
    public final static QBFCompareEnum COMP_EQUALS = new QBFCompareEnum(4, "qbf.equals") {
        public String getExpression(String sField, String sSQLValue) {
            return sField + " = " + sSQLValue;
        }
    };
    public final static QBFCompareEnum COMP_DISTINCT = new QBFCompareEnum(5, "qbf.distinct") {
        public String getExpression(String sField, String sSQLValue) {
            return sField + " <> " + sSQLValue;
        }
    };
    public final static QBFCompareEnum COMP_GREATER = new QBFCompareEnum(6, "qbf.greater") {
        public String getExpression(String sField, String sSQLValue) {
            return sField + " > " + sSQLValue;
        }
    };
    public final static QBFCompareEnum COMP_LESS = new QBFCompareEnum(7, "qbf.less") {
        public String getExpression(String sField, String sSQLValue) {
            return sField + " < " + sSQLValue;
        }
    };
    public final static QBFCompareEnum COMP_GREATEROREQUALS = new QBFCompareEnum(8, "qbf.greaterequals") {
        public String getExpression(String sField, String sSQLValue) {
            return sField + " >= " + sSQLValue;
        }
    };
    public final static QBFCompareEnum COMP_LESSOREQUALS = new QBFCompareEnum(9, "qbf.lessequals") {
        public String getExpression(String sField, String sSQLValue) {
            return sField + " <= " + sSQLValue;
        }
    };
    //    public final static QBFCompareEnum COMP_STARTSWITH = new QBFCompareEnum(10, "qbf.startswith") {
//        public String getExpression(String sField, String sSQLValue) { return sField + " LIKE " ... + sSQLValue; }
//    };
//    public final static int COMP_ENDSWITH = 12;
    //    public final static int COMP_CONTAINS = 13;
    public final static QBFCompareEnum COMP_IN = new QBFCompareEnum(14, "qbf.in") {
        public String getExpression(String sField, String sSQLValue) {
            return sField + " IN ( " + sSQLValue + " )";
        }
    };

    public final static QBFCompareEnum COMP_ALL = new QBFCompareEnum(15, "qbf.all") {
        public String getExpression(String sField, String sSQLValue) {
            return "1=1";
        }
    };*/
}
